[项目问题]Android

MVC、MPV

  • MVC模式:
    • Activity在C层,但由于Android的问题,Activity会要做到View层和Controller层的事情。
  • MVP:
    • Activity在View层,通过P层去访问Model层,后P层再把数据给Activity。

如何获取本地音乐

  • 首先使用MediaStore.Audio.Media.EXTERNAL_CONTENT_URI查询到音乐存储的URI。
  • 使用ContentResolver.query(),来查询,返回结果是一个Cursor对象。这个对象允许程序以行的方法读取和处理数据,里面每一行就是歌曲的信息。
  • 用一个List,里面的对象时Music的实体类,将这些信息存入到这个List中。

如何展示音乐列表

  • 展示音乐列表通过RecycleView来实现,它通过Adapter与数据源进行通信,当需要显示一个新的Item时,Adapter会告诉RecycleView如何创建ViewHolder并绑定数据。
  • ViewHolder:
    • ViewHolder就是RecycleVIew中一个单独的视图。
  • 初始化后,将数据源与ViewHolder绑定。数据源就是包含音乐信息的List。在onBindViewHolder.
  • 绑定完后,去Activity中创建适配器。并将其与RecycleView绑定。
  • 使用接口回掉的方法完成点击事件,接口中将被点击的View和点击的位置传入。写一个传递接口的方法,当有一个被点击时调用这个接口。
  • 在Activity中设置一个点击监听,在这里完成详细的操作。

广播

  • 应用程序发送广播的时候,这条广播将会发送给所有已注册该广播的接收者,接收者可以通过在代码中注册特定的IntentFilter来接收广播。
  • 我注册的广播类型:
    • 播放/暂停
    • 下一首
    • 上一首
    • 添加进喜欢歌单
    • 关闭
    • 更新
    • 错误
  • 各个控件:通知栏,底部栏等将会接收到广播更新自己的UI。

我的数据库

  • 存了三张表
  • 1.歌曲信息表
  • 2.歌单信息表
  • 3.歌单与歌曲的对应表
  • 软件第一次启动时,默认创建这三张表,并默认创建我最喜欢歌单和历史记录歌单。

Room操作数据库

  • Entity:

    • @Entity:标记为一个实体类,类似于bean
    • @primary: 主键
    • @ColumIfo: 别名
  • Dao接口:对ntity操作的封装,可以在这里进行增删改查

    • @DAO: 标明
    • @Insert: 插入
    • @Update: 修改
    • @Delete: 删除
    • @Query: 查询
      • @Query(“SELECT * FROM WORD ORDER BY ID DESC”) 查询所有降序排序。
      • @Query(“DELETE FROM WORD”) 清空WORD表。
  • DataBase:抽象类,继承于RoomDataBase
    • @Database(eneieies = {Word.Class}, version = 1)//第一个是哪个实体类
    • 里面写一个抽象的Dao就行。
      要想实现对数据库增删改查, 那么先创建一个database对象,用这个对象获取数据的dao,然后调用dao的方法就可以了

查询时

  • 使用嵌套查询
  • 1
    SELECT *FROM student WHERE sid in (SELECT sid FROM teach WHERE tid = (SELECT tid from teacher WHERE name = '张三'))

    Fragment传递数据

    使用Bundle

  • 使用bundle将数据打包传递给另一个Fragmen。
  • 使用put对象添加数据。
    1
    bundle.putString("key", "value")
  • 另一个Fragmen中,通过getArguments()的方式获取Bundle
    1
    2
    Bund bundle = getArgumnet();
    String value = bundle.getString("key");

使用接口回调

  • 定一个一个接口,让Fragment实现它,并传递给第二个Fragment。
  • 第二个Fragment中,调用接口来传数据。